package com.hrt.datasender.process.strategy;

import java.util.List;

import com.btcode.db.result.Row;
import com.hrt.datasender.datadao.model.BcSendPlatformModel;
import com.hrt.datasender.process.indentity.hj212.MessageModel;

/**
 * 数据打包和解析策略接口
 * 
 * @author gislin
 *
 */
public interface IProcessStrategy {

    /**
     * 策略ID
     * 
     * @return
     */
    default String getStrategyId() {
        String name = getClass().getName().replace("com.hrt.datasender.process.strategy.", "");
        return name;
    };

    /**
      * 
     * @return
     */
    String getCommandId();

    /**
     * 策略名称
     * 
     * @return
     */
    String getStrategyName();

    /**
     * 打包数据
     * 
     * @param data
     * @return
     */
    Object packet(List<Row> data, BcSendPlatformModel platform) throws Exception;

    /**
     * 解析数据
     * 
     * @param data
     */
    void decode(MessageModel data, BcSendPlatformModel sendPlatform) throws Exception;

    /**
     * 打包补传数据
     *
     * @param data
     * @return
     */
    Object packetReissue(List<Row> data, BcSendPlatformModel platform) throws Exception;

}
